!function (n, t) {
    "object" == typeof exports && "undefined" != typeof module ? module.exports = t() : "function" == typeof define && define.amd ? define(t) : n.Ald = t()
}(this, function () {
    function n(n) {
        this.app = n
    }

    function t(t) {
        O = t, this.aldstat = new n(this), y("app", "launch")
    }

    function o(n) {
        if (O = n, C = n.query.ald_share_src, F = n.query.aldsrc || "", j = n.query.ald_share_src, U = Date.now(), A = Date.now(), !tn) {
            I = "" + Date.now() + Math.floor(1e7 * Math.random()), E = !1;
            try {
                wx.setStorageSync("ald_ifo", !1)
            } catch (n) {
            }
        }
        tn = !1, 0 !== b && Date.now() - b > 3e5 && (T = "" + Date.now() + Math.floor(1e7 * Math.random()), A = Date.now()), n.query.ald_share_src && "1044" == n.scene && n.shareTicket ? wx.getShareInfo({
            shareTicket: n.shareTicket,
            success: function (n) {
                G = n, _("event", "ald_share_click", JSON.stringify(n))
            }
        }) : n.query.ald_share_src && _("event", "ald_share_click", 1), "" === K && wx.getSetting({
            withCredentials: !0,
            success: function (n) {
                if (n.authSetting["scope.userInfo"]) {
                    wx.getUserInfo({
                        withCredentials: !0, success: function (n) {
                            var t = p();
                            K = n, t.ufo = w(n), q = g(n.userInfo.avatarUrl.split("/")), d(t)
                        }
                    })
                }
            }
        }), y("app", "show")
    }

    function e() {
        b = Date.now(), "" === K && wx.getSetting({
            success: function (n) {
                n.authSetting["scope.userInfo"] && wx.getUserInfo({
                    withCredentials: !0, success: function (n) {
                        K = n, q = g(n.userInfo.avatarUrl.split("/"));
                        var t = p();
                        t.ufo = w(n), d(t)
                    }
                })
            }
        }), y("app", "hide")
    }

    function a(n) {
        J++, _("event", "ald_error_message", n)
    }

    function r(n) {
        X = n
    }

    function i() {
        z = this.route, Y = Date.now(), $ = 0, Z = 0
    }

    function s() {
        S("page", "hide"), Q = this.route
    }

    function c() {
        S("page", "unload"), Q = this.route
    }

    function u() {
        $++
    }

    function l() {
        Z++
    }

    function f(n) {
        var t = v(n.path), o = {};
        for (var e in O.query) "ald_share_src" === e && (o[e] = O.query[e]);
        var a = "";
        if (a = n.path.indexOf("?") == -1 ? n.path + "?" : n.path.substr(0, n.path.indexOf("?")) + "?", "" !== t) for (var e in t) o[e] = t[e];
        o.ald_share_src ? o.ald_share_src.indexOf(N) == -1 && o.ald_share_src.length < 200 && (o.ald_share_src = o.ald_share_src + "," + N) : o.ald_share_src = N;
        for (var r in o) r.indexOf("ald") == -1 && (a += r + "=" + o[r] + "&");
        return n.path = a + "ald_share_src=" + o.ald_share_src, _("event", "ald_share_status", n), n
    }

    function h() {
        function n() {
            return Math.floor(65536 * (1 + Math.random())).toString(16).substring(1)
        }

        return n() + n() + n() + n() + n() + n() + n() + n()
    }

    function d(n) {
        var t = n, o = 0, e = 0, a = function (r) {
            e++, r ? (n = {}, n.et = Date.now(), n.at = I, n.uu = N, n.v = P, n.ak = t.ak, n.life = t.life, n.ev = t.ev, n.err = "err", n.status = o) : (H++, n.at = I, n.et = Date.now(), n.uu = N, n.v = P, n.ak = M.app_key, n.wsr = O, n.oifo = E, n.rq_c = H), wx.request({
                url: "https://" + R + ".aldwx.com/d.html",
                data: n,
                header: {
                    AldStat: "MiniApp-Stat",
                    waid: M.appid || "",
                    wst: M.appsecret || "",
                    se: L || "",
                    op: k || "",
                    img: q
                },
                method: "GET",
                success: function (n) {
                    o = n.statusCode, 200 != n.statusCode && e <= 3 && a("errorsend")
                },
                fail: function () {
                    e <= 3 && a("errorsend")
                }
            })
        };
        a()
    }

    function p() {
        var n = {};
        for (var t in V) n[t] = V[t];
        return n
    }

    function g(n) {
        for (var t = "", o = 0; o < n.length; o++) n[o].length > t.length && (t = n[o]);
        return t
    }

    function w(n) {
        var t = {};
        for (var o in n) "rawData" != o && "errMsg" != o && (t[o] = n[o]);
        return t
    }

    function v(n) {
        if (n.indexOf("?") == -1) return "";
        var t = {};
        return n.split("?")[1].split("&").forEach(function (n) {
            var o = n.split("=")[1];
            t[n.split("=")[0]] = o
        }), t
    }

    function y(n, t) {
        var o = p();
        o.ev = n, o.life = t, o.ec = J, o.st = B, F && (o.qr = F, o.sr = F), C && (o.usr = C), "launch" !== t && (o.ahs = T), "hide" === t && (o.hdr = Date.now() - A, o.dr = Date.now() - U, o.ifo = !!E), d(o)
    }

    function S(n, t) {
        var o = p();
        o.ev = n, o.st = Date.now(), o.life = t, o.pp = z, o.pc = Q, o.dr = Date.now() - B, o.ndr = Date.now() - Y, o.rc = $, o.bc = Z, o.ahs = T, X && "{}" != JSON.stringify(X) && (o.ag = X), F && (o.qr = F, o.sr = F), C && (o.usr = C), W || (nn = z, W = !0, o.ifp = W, o.fp = z), d(o)
    }

    function _(n, t, o) {
        var e = p();
        e.ev = n, e.tp = t, e.st = B, o && (e.ct = o), d(e)
    }

    function m(n, t, o) {
        if (n[t]) {
            var e = n[t];
            n[t] = function (n) {
                o.call(this, n, t), e.call(this, n)
            }
        } else n[t] = function (n) {
            o.call(this, n, t)
        }
    }

    function D(n) {
        var r = {};
        for (var i in n) "onLaunch" !== i && "onShow" !== i && "onHide" !== i && "onError" !== i && "onPageNotFound" !== i && "onUnlaunch" !== i && (r[i] = n[i]);
        r.onLaunch = function (o) {
            t.call(this, o), "function" == typeof n.onLaunch && n.onLaunch.call(this, o)
        }, r.onShow = function (t) {
            o.call(this, t), n.onShow && "function" == typeof n.onShow && n.onShow.call(this, t)
        }, r.onHide = function () {
            e.call(this), n.onHide && "function" == typeof n.onHide && n.onHide.call(this)
        }, r.onError = function (t) {
            a.call(this, t), n.onError && "function" == typeof n.onError && n.onError.call(this, t)
        }, r.onUnlaunch = function () {
            n.onUnlaunch && "function" == typeof n.onUnlaunch && n.onUnlaunch.call(this)
        }, r.onPageNotFound = function (t) {
            n.onPageNotFound && "function" == typeof n.onPageNotFound && n.onPageNotFound.call(this, t)
        }, App(r)
    }

    function x(n) {
        var t = {};
        for (var o in n) "onLoad" !== o && "onReady" !== o && "onShow" !== o && "onHide" !== o && "onUnload" !== o && "onPullDownRefresh" !== o && "onReachBottom" !== o && "onShareAppMessage" !== o && "onPageScroll" !== o && "onTabItemTap" !== o && (t[o] = n[o]);
        t.onLoad = function (t) {
            r.call(this, t), "function" == typeof n.onLoad && n.onLoad.call(this, t)
        }, t.onShow = function (t) {
            i.call(this), "function" == typeof n.onShow && n.onShow.call(this, t)
        }, t.onHide = function (t) {
            s.call(this), "function" == typeof n.onHide && n.onHide.call(this, t)
        }, t.onUnload = function (t) {
            c.call(this), "function" == typeof n.onUnload && n.onUnload.call(this, t)
        }, t.onReady = function (t) {
            n.onReady && "function" == typeof n.onReady && n.onReady.call(this, t)
        }, t.onReachBottom = function (t) {
            l(), n.onReachBottom && "function" == typeof n.onReachBottom && n.onReachBottom.call(this, t)
        }, t.onPullDownRefresh = function (t) {
            u(), n.onPullDownRefresh && "function" == typeof n.onPullDownRefresh && n.onPullDownRefresh.call(this, t)
        }, t.onPageScroll = function (t) {
            n.onPageScroll && "function" == typeof n.onPageScroll && n.onPageScroll.call(this, t)
        }, t.onTabItemTap = function (t) {
            n.onTabItemTap && "function" == typeof n.onTabItemTap && n.onTabItemTap.call(this, t)
        }, n.onShareAppMessage && "function" == typeof n.onShareAppMessage && (t.onShareAppMessage = function (t) {
            var o = n.onShareAppMessage.call(this, t);
            return void 0 === o ? (o = {}, o.path = this.route) : void 0 === o.path && (o.path = this.route), f.call(this, o)
        }), Page(t)
    }

    var M = require("./ald-stat-conf"), P = "7.0.0", R = "log", I = "" + Date.now() + Math.floor(1e7 * Math.random()),
        T = "" + Date.now() + Math.floor(1e7 * Math.random()), A = "", U = 0, b = 0, L = "", k = "", q = "", H = 0,
        O = "", E = "", N = function () {
            var n = "";
            try {
                n = wx.getStorageSync("aldstat_uuid")
            } catch (t) {
                n = "uuid_getstoragesync"
            }
            if (n) E = !1; else {
                n = h(), E = !0;
                try {
                    wx.setStorageSync("aldstat_uuid", n), wx.setStorageSync("ald_ifo", !0)
                } catch (n) {
                    wx.setStorageSync("aldstat_uuid", "uuid_getstoragesync")
                }
            }
            return n
        }(), B = Date.now(), C = "", F = "", j = "", J = 0, G = "", K = "", V = {}, W = !1, z = "", Q = "", X = "", Y = "",
        Z = 0, $ = 0, nn = "", tn = !0;
    !function () {
        wx.request({
            url: "https://" + R + ".aldwx.com/config/app.json",
            header: {AldStat: "MiniApp-Stat"},
            method: "GET",
            success: function (n) {
                200 === n.statusCode && (n.data.version != P && console.warn("您的SDK不是最新版本，请尽快升级！"), n.data.warn && console.warn(n.data.warn), n.data.error && console.error(n.data.error))
            }
        })
    }();
    try {
        var on = wx.getSystemInfoSync();
        V.br = on.brand, V.pm = on.model, V.pr = on.pixelRatio, V.ww = on.windowWidth, V.wh = on.windowHeight, V.lang = on.language, V.wv = on.version, V.wvv = on.platform, V.wsdk = on.SDKVersion, V.sv = on.system
    } catch (n) {
    }
    wx.getNetworkType({
        success: function (n) {
            V.nt = n.networkType
        }
    }), wx.getSetting({
        success: function (n) {
            n.authSetting["scope.userLocation"] ? wx.getLocation({
                type: "wgs84", success: function (n) {
                    V.lat = n.latitude, V.lng = n.longitude, V.spd = n.speed
                }
            }) : M.getLocation && wx.getLocation({
                type: "wgs84", success: function (n) {
                    V.lat = n.latitude, V.lng = n.longitude, V.spd = n.speed
                }
            })
        }
    }), n.prototype.debug = function (n) {
        _("debug", "0", n)
    }, n.prototype.warn = function (n) {
        _("warn", "1", n)
    }, n.prototype.sendEvent = function (n, t) {
        if ("" !== n && "string" == typeof n && n.length <= 255) if ("string" == typeof t && t.length <= 255) _("event", n, t); else if ("object" == typeof t) {
            if (JSON.stringify(t).length >= 255) return void console.error("自定义事件参数不能超过255个字符");
            _("event", n, JSON.stringify(t))
        } else void 0 === t ? _("event", n, !1) : console.error("事件参数必须为String,Object类型,且参数长度不能超过255个字符"); else console.error("事件名称必须为String类型且不能超过255个字符")
    }, n.prototype.sendSession = function (n) {
        if ("" === n || !n) return void console.error("请传入从后台获取的session_key");
        if ("" === M.appid || "" === M.appsecret) return void console.error("请在配置文件中填写小程序的appid和appsecret！");
        L = n;
        var t = p();
        t.st = Date.now(), t.tp = "session", t.ct = "session", t.ev = "event", "" === K ? wx.getSetting({
            success: function (n) {
                n.authSetting["scope.userInfo"] ? wx.getUserInfo({
                    success: function (n) {
                        t.ufo = w(n), q = g(n.userInfo.avatarUrl.split("/")), "" !== G && (t.gid = G), d(t)
                    }
                }) : "" !== G ? (t.gid = G, d(t)) : console.warn("用户未授权")
            }
        }) : (t.ufo = K, "" !== G && (t.gid = G), d(t))
    }, n.prototype.sendOpenid = function (n) {
        if ("" === n || !n) return void console.error("openID不能为空");
        k = n;
        var t = p();
        t.st = Date.now(), t.tp = "openid", t.ev = "event", t.ct = "openid", d(t)
    };
    return M.plugin ? {App: D, Page: x} : function (n) {
        !function () {
            var n = App, h = Page;
            App = function (r) {
                m(r, "onLaunch", t), m(r, "onShow", o), m(r, "onHide", e), m(r, "onError", a), n(r)
            }, Page = function (n) {
                var t = n.onShareAppMessage;
                m(n, "onLoad", r), m(n, "onUnload", c), m(n, "onShow", i), m(n, "onHide", s), m(n, "onReachBottom", l), m(n, "onPullDownRefresh", u), void 0 !== t && null !== t && (n.onShareAppMessage = function (n) {
                    if (void 0 !== t) {
                        var o = t.call(this, n);
                        return void 0 === o ? (o = {}, o.path = this.route) : void 0 === o.path && (o.path = this.route), f(o)
                    }
                }), h(n)
            }
        }()
    }()
});